package io.file;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

//세번째 실습, 에러를 다 잡아서 실행시켜 보자.
//File Api 찾아보기
public class FileTest {
	public static void main(String[] args) {
	//java.io.file : 파일과 디렉토리를 추상화한 클래스
	//파일/디렉토리의 정볼르 조회하는 기능을 제공
	//파일 디렉토리를 조작하는 기능을 제공
		//절대 경로? - 시작위치에서부터 찾아가는 방식
		//상대 경로? - 현재위치에서부터 찾아가는 방식
		//       .\ - 현재위치(생략가능) ex) .\koala.jpg 이 .점은 지금 현재 내가 있는 위치를 말한다. 

		
		//절대 경로, 상대경로 꼭 기억하고 공부해야 한다.
	File dir = new File("c:\\temp");//디렉토리 객체 - 절대경로
	File file1 = new File("abcdef.jpg");//파일 객체 - 상대경로, 실행하는 클래스 파일의 경로가 현재경로
	
	// 파일/디렉토리의 정보 조회 메소드
	String absPath = dir.getAbsolutePath();
	System.out.println("dir의 절대 경로 : " + absPath);
	absPath = file1.getAbsolutePath();
	System.out.println("file1의 절대경로 : " + absPath);
	
	//파일/ 디렉토리의 존재 여부를 체크
	
	boolean flag = dir.exists();
	System.out.println("dir의 존재 여부 : "+flag);
	flag = file1.exists();
	System.out.println("file1의 존재 여부  " + flag);
	
	//파일인지 디렉토리인지 체크
	System.out.println("dir인지 파일인지 체크  :" +dir.isFile());
	System.out.println("dir이 디렉토리 인지 체크 : "+dir.isDirectory());
	
	//파일 크기를 알려주는 메소드
	File file2 = new File(dir, "myfile.txt");
	long byteSize = file2.length();
	System.out.println(byteSize);
	
	long milliSecond = file2.lastModified();
	System.out.println(milliSecond);
	Date d = new Data(milliSecond);//날짜와 시간을관리하는 클래스
	
	System.out.println(getDateString(d));
	
	System.out.println(getDateString2(d));
	
	System.out.println("file2의 읽기 가능여부 : " + file2.canRead());
	System.out.println("file2의 쓰기 가능 여부 : "+ file2.canWrite());
	
	//특정 디렉토리내의 모든 하위 요소들(파일/디렉토리)의 이름을 조회
	String [] list = dir.list();
	for(String s : list){
		System.out.println(s);
	}
	
	//파일 / 디렉토리 조작하는 메소드들
	//디렉토리 생성
	File dir2 = new File("c:\\temp\\newDir");
	boolean flag2 = dir2.mkdir();//생성 성공 여부를 리턴
	System.out.println("newDir 디렉토리 생성 여부 : "+flag2);
	File dir3 = new File("c:\\temp\\a\\b\\c\\newDir");
	System.out.println(dir3.mkdir());//내가 만들려고 하는 거는 마지막에 있는거고 그 중간 경로는 존재해야 한다.
	System.out.println(dir3.mkdirs());//부모 경로가 없으면 부모 경로까지 다 만든다. //성공 여부를 트루 풜스로 리턴한다. 
	
	
	//파일생성
	File file3 = new File(dir2, "newFile.file");
	file3.createNewFile();//파일 생성 성공여부 불린값 리턴//그냥 하면 에러난다. 에러를 해결해봐라.
	
	//파일 삭제
	file3.delete();//삭제 여부를 불린으로 리턴
	
}
	
	
	public static String getDateString(Date d){
		int year = d.getYear()+1900;
		int month = d.getMonth();
		int day = d.getDay();
		int hour = d.getHours();
		return year+month+day+hour;
	}
	
	
	
	public static String getDateString2(Date d){
		//E 는 요일이다.
		//전환 문자 공부
		//객체를 생성할때 원하는 패턴을 아래처럼 쓰면 스트링으로 값을 반환한다.
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초 E요일");
		String str = sdf.format(d);
		return str;
	}
}
